www.gusucode.com > VC++仿XP免费Prof UIS界面库-源码程序 > VC++仿XP免费Prof UIS界面库-源码程序/code/Samples/ResizablePropertySheet/ResizablePropertySheet.cpp

    //Download by http://www.NewXing.com
// ResizablePropertySheet.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "ResizablePropertySheet.h"
#include "MyResizablePage1.h"
#include "MyResizablePage2.h"
#include "MyResizablePage3.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyResizablePropertySheet

class CMyResizablePropertySheet : public CExtResizablePropertySheet
{
public:
	CMyResizablePropertySheet(
		UINT nIDCaption,
		CWnd *pParentWnd = NULL,
		UINT iSelectPage = 0
		)
		: CExtResizablePropertySheet(
			nIDCaption,
			pParentWnd,
			iSelectPage
			)
	{
	}
	CMyResizablePropertySheet(
		LPCTSTR pszCaption,
		CWnd *pParentWnd = NULL,
		UINT iSelectPage = 0
		)
		: CExtResizablePropertySheet(
			pszCaption,
			pParentWnd,
			iSelectPage
			)
	{
	}
	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
	{
#if _MFC_VER >= 0x700
		if( (m_psh.dwFlags&PSH_WIZARD97) != 0 )
		{
			if( message == WM_PAINT || message == WM_ERASEBKGND )
			{
				LRESULT lResult = CPropertySheet::WindowProc(message,wParam,lParam);
				if(		message == WM_PAINT
					&&	m_bShowResizingGripper
					&&	(!IsZoomed())
					)
				{
					CClientDC dc( this );
					CFont * pOldFont =
						dc.SelectObject(
							&g_PaintManager->m_FontMarlett
							);
					ASSERT( pOldFont != NULL );
					COLORREF clrOld = dc.SetTextColor(
						g_PaintManager->GetColor(
							CExtPaintManager::CLR_TEXT_OUT
							)
						);
					INT nOldBkMode = dc.SetBkMode(TRANSPARENT);
					dc.DrawText(
						_T("o"),
						1,
						m_rcResizingGripper,
						DT_SINGLELINE|DT_RIGHT|DT_BOTTOM
						);
					dc.SetBkMode(nOldBkMode);
					dc.SetTextColor(clrOld);
					dc.SelectObject(pOldFont);
				}
				return lResult;
			}
		}
#endif // #if _MFC_VER >= 0x700
		return CExtResizablePropertySheet::WindowProc(message,wParam,lParam);
	}
}; // class CMyResizablePropertySheet

/////////////////////////////////////////////////////////////////////////////
// CMyApp

BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
	//{{AFX_MSG_MAP(CMyApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyApp construction

CMyApp::CMyApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CMyApp object

CMyApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CMyApp initialization

BOOL CMyApp::InitInstance()
{
	SetRegistryKey(
		_T("Foss") // your company name
		);

	// comment/uncomment one of these lines to set different style
	g_PaintManager.InstallPaintManager( new CExtPaintManagerOffice2003 );
	//g_PaintManager.InstallPaintManager( new CExtPaintManager );

CMyResizablePropertySheet
		_PropSheet(
			AFX_IDS_APP_TITLE // your software name
			);

	// add pages
CMyResizablePage1 _page1;
	_PropSheet.AddPage( &_page1 );
CMyResizablePage2 _page2;
	_PropSheet.AddPage( &_page2 );
CMyResizablePage3 _page3;
	_PropSheet.AddPage( &_page3 );

	// enable persistent window position
	_PropSheet.EnableSaveRestore(
		_T( "Dialog Settings" ),
		_T( "Main Property Sheet" )
		);

	// comment this line and next lines to set simple tabbed mode (non-wizard)
	_PropSheet.SetWizardMode();

	// these lines are available with MFC7 only
	// comment them to set old wizard mode
#if _MFC_VER >= 0x700
	_PropSheet.m_psh.dwSize = sizeof(_PropSheet.m_psh);
	_PropSheet.m_psh.dwFlags |=
		PSH_WIZARD97|PSH_WATERMARK|PSH_WIZARDHASFINISH;
	_PropSheet.m_psh.pszbmWatermark = MAKEINTRESOURCE(IDB_BITMAP_WATERMARK);
	_PropSheet.m_psh.hInstance = ::AfxGetInstanceHandle();
	_page1.m_psp.dwFlags |= PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
	_page1.m_psp.pszHeaderTitle = _T("Title of page 1");
	_page1.m_psp.pszHeaderSubTitle = _T("Subtitle of page 1");
	_page2.m_psp.dwFlags |= PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
	_page2.m_psp.pszHeaderTitle = _T("Title of page 2");
	_page2.m_psp.pszHeaderSubTitle = _T("Subtitle of page 2");
	_page3.m_psp.dwFlags |= PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
	_page3.m_psp.pszHeaderTitle = _T("Title of page 3");
	_page3.m_psp.pszHeaderSubTitle = _T("Subtitle of page 3");
#endif // #if _MFC_VER >= 0x700


	// run it
	if( _PropSheet.DoModal() == IDOK )
	{
		//::AfxMessageBox( _T("<OK> pressed") );
	}
	else
	{
		//::AfxMessageBox( _T("<Cancel> pressed") );
	}

	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}